/*
 * Nodo.h
 *
 *  Created on: Mar 24, 2011
 *      Author: Francisco
 */

#include <stdio.h>
#ifndef NODO_H
#define NODO_H

template<class T> class Nodo {

    private:

        T dato;

        Nodo<T>* siguiente;

        Nodo<T>* anterior;

    public:

        Nodo(T dato) {
            this->setDato(dato);
            this->setSiguiente(NULL);
            this->setAnterior(NULL);
        }


        virtual ~Nodo() {
        }

        void setDato(T dato) {
            this->dato = dato;
        }

        T getDato() {
            return this->dato;
        }

        void setSiguiente(Nodo<T>* nodo) {
            this->siguiente = nodo;
        }

        Nodo<T>* getSiguiente() {
            return this->siguiente;
        }

        bool tieneSiguiente() const {
            return (this->siguiente != NULL);
        }

        void setAnterior(Nodo<T>* nodo) {
            this->anterior = nodo;
        }

        Nodo<T>* getAnterior() {
            return this->anterior;
        }

        bool tieneAnterior() const {
            return (this->anterior != NULL);
        }
};

#endif
